package cn.ad.common;

import org.springframework.util.CollectionUtils;

import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 数据验证工具类
 * @author shirongkang
 */
public class DataUtils {

	/**
	 * 判断字符串是为空
	 * @param str
	 * @return
	 */
	public static boolean isNull(String str) {
		if(null == str || "".equals(str) || str.isEmpty()) {
			return true;
		}
		return false;
	}
	/**
	 * 判断字符串是为空
	 * @param str
	 * @return
	 */
	public static boolean isNull(String[] str) {
		if(null == str || str.length==0) {
			return true;
		}
		return false;
	}

	/**
	 * 判断List集合为空
	 * @param list
	 * @return
	 */
	public static boolean isNull(List list) {
		if(CollectionUtils.isEmpty(list) || list.isEmpty() || list.size() == 0) {
			return true;
		}
		return false;
	}
	/**
	 * 判断Map集合为空
	 * @param map
	 * @return
	 */
	public static boolean isNull(Map map) {
		if(CollectionUtils.isEmpty(map) || map.isEmpty() || map.size() == 0) {
			return true;
		}
		return false;
	}
	/**
	 * 判断Integer[]集合为空
	 * @param i
	 * @return
	 */
	public static boolean isNull(Integer[] i) {

		if(null == i || i.length == 0) {
			return true;
		}
		return false;
	}

	/**
	 * 计算数组和
	 * @param i
	 * @return
	 */
	public static Integer sum(Integer[] i) {
		if(!isNull(i)) {
			int sum = 0;
			for(int k : i) {
				sum+=k;
			}
			return sum;
		}
		return 0;
	}

	/**
	 * * 两个Double数相加 *
	 *
	 * @param v1 *
	 * @param v2 *
	 * @return Double
	 */
	public static BigDecimal add(BigDecimal v1, BigDecimal v2) {
//		BigDecimal b1 = new BigDecimal(v1.toString());
//		BigDecimal b2 = new BigDecimal(v2.toString());
		return v1.add(v2);
	}

	/**
	 * * 两个Double数相减 *
	 *
	 * @param v1 *
	 * @param v2 *
	 * @return Double
	 */
	public static BigDecimal sub(BigDecimal v1, BigDecimal v2) {
//		BigDecimal b1 = new BigDecimal(v1.toString());
//		BigDecimal b2 = new BigDecimal(v2.toString());
		return v1.subtract(v2);
	}

	/**
	 * 比较大小 true 第一位数大或相等 false 第二位数大
	 * @param v1
	 * @param v2
	 * @return
	 */
	public static boolean compare(BigDecimal v1, BigDecimal v2) {
		if (v1.compareTo(v2) < 0) {
			return false;
		}
		return true;
	}

	/**
	 * 日期是否相等
	 * @param d1
	 * @param d2
     * @return
     */
	public static Boolean compareDate(Date d1,Date d2){
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		String s1 = sdf.format(d1);
		String s2 = sdf.format(d2);
		if(s1.equals(s2))return true;
		else return false;
	}

}
